home *** CD-ROM | disk | FTP | other *** search
- // ===============================================================
- // Fragment Program: Indoor water volume using reflection cube map
- // Description: used for indoor water volumes
- // Last Update: 19/10/2003
- // Coder: Tiago Sousa
- // ===============================================================
-
- #include "../CGVPMacro.csi"
-
- MainInput
- {
- uniform sampler2D bumpMap : texunit0,
- uniform samplerCUBE envMap : texunit3,
- uniform float4 Ambient,
- uniform float4 WaterColor
- }
-
- DeclarationsScript
- {
- OUT_T0_T1_T2_T3_C0
- FOUT
- }
-
- CoreScript
- {
- // load the decal
- float4 bumpNormal = tex2D(bumpMap, IN.Tex0.xy);
-
- #ifdef PROFILE_PS_1_1
- float4 env = texCUBE_reflect_dp3x3(envMap, IN.Tex3, IN.Tex1, IN.Tex2, bumpNormal);
- #endif
-
- #ifdef OTHER
- float3 E = float3(IN.Tex1.w, IN.Tex2.w, IN.Tex3.w);
- float3 N = float3(dot(IN.Tex1.xyz, bumpNormal.xyz),
- dot(IN.Tex2.xyz, bumpNormal.xyz),
- dot(IN.Tex3.xyz, bumpNormal.xyz));
- float3 env = texCUBE(envMap, 2*(dot(N, E)/dot(N, N))*N - E);
- #endif
-
- OUT.Color.xyz = env.xyz * IN.Color.xyz*WaterColor.xyz+WaterColor.xyz*0.2;
- OUT.Color.a = IN.Color.a * WaterColor.a;
- }
-
-